<?php
class UsuariosController extends AppController {

	var $name = 'Usuarios';
	var $uses = array('Usuario');

	function login($msg = null) {
		$this->layout = 'inicial';
		
		if ( !empty($this->data) && $this->Session->read('Auth.Usuario') ) {
			
			$pessoa_id = $this->Session->read('Auth.Usuario.pessoa_id');
			$nome = $this->Usuario->Pessoa->field('nome', array('Pessoa.id' => $pessoa_id));
			$this->Session->write('nome', $nome);
			if ( $this->data['Usuario']['login'] == true )
				$this->redirect(array('action' => 'alterarLocal'));
			else {
				$this->redirect('/menu/');
			}
				
		} elseif ( !empty($this->data) && !$this->Session->read('Auth.Usuario') ) {
			$msg = 'Senha ou usuário inválidos. Favor tentar novamente.';
			$this->data['Usuario']['usuario'] = '';
			$this->data['Usuario']['senha'] = '';
		}
		
		$this->set(compact('msg'));
	}

	function logout() {
		$this->Session->delete('local');
		$this->redirect($this->Auth->logout());    
	}
	
	function alterarLocal() {
		
		if (!empty($this->data)) {
			$this->Session->write('local', $this->data['Usuario']['atual']);
			//pr($this->referer()); exit;
			//$this->redirect(array('controller' => 'pages', 'action' => 'menu'));
			$this->redirect('/');	
		}
		
	}
	
	//TODO utilizar as flash msgs para que o echo não seja carregado antes da página.
	function alterarSenha($msg = null) {
		
		if (!empty($this->data)) {
			
			$this->data['Usuario']['id'] = $this->Session->read('Auth.Usuario.id');
			$senha_atual = $this->Usuario->field('senha', array('Usuario.id' => $this->data['Usuario']['id']));
			$this->data['Usuario']['usuario'] = $this->Session->read('Auth.Usuario.usuario');
			
			if ( $this->Auth->password($this->data['Usuario']['atual']) == $senha_atual ) {
				
				if ( $this->data['Usuario']['senha'] == $this->data['Usuario']['senha_confirm'] ) {
					
					$this->data['Usuario']['senha'] = $this->Auth->password($this->data['Usuario']['senha']);
					if ( $this->Usuario->save($this->data) ) {
						
						$msg = 'Senha alterada com sucesso.';
						$this->redirect('/menu/');
						
					} else 
						$msg = 'Erro ao alterar a senha.';
					
				} else 
					$msg = 'As novas senhas não conferem.';
					
			} else 
				$msg = 'A senha atual inserida não confere.';

			unset($this->data['Usuario']);
		}
		$this->set(compact('msg'));
		
	}
	
	function index() {
		$this->Usuario->recursive = 0;
		$this->set('usuarios', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(sprintf(__('%s inválido.', true), 'Usuario'));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('usuario', $this->Usuario->read(null, $id));
	}

	function add() {
		if (!empty($this->data)) {
			$this->Usuario->create();
			if ($this->Usuario->save($this->data)) {
				$this->Session->setFlash(sprintf(__('O %s foi salvo.', true), 'usuario'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(sprintf(__('O %s não pode ser salvo. Por favor, tente novamente.', true), 'usuario'));
			}
		}
		$pessoas = $this->Usuario->Pessoa->find('list');
		$this->set(compact('pessoas'));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(sprintf(__('%s inválido.', true), 'Usuario'));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->Usuario->save($this->data)) {
				$this->Session->setFlash(sprintf(__('O %s foi salvo.', true), 'usuario'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(sprintf(__('O %s não pode ser salvo. Por favor, tente novamente.', true), 'usuario'));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Usuario->read(null, $id);
		}
		$pessoas = $this->Usuario->Pessoa->find('list');
		$this->set(compact('pessoas'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(sprintf(__('ID inválido para %s.', true), 'usuario'));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Usuario->delete($id)) {
			$this->Session->setFlash(sprintf(__('%s excluído.', true), 'Usuario'));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(sprintf(__('%s não pode ser excluído.', true), 'Usuario'));
		$this->redirect(array('action' => 'index'));
	}
}
?>